iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
自我挑戰組

拯救混亂數據:30 天 Python 輕量級 ETL 與電商關聯資料分析系列 第 3

[Day 03] ETL 起手式:開發環境與 Pandas 批次讀取實戰

  • 分享至 

  • xImage
  •  

建立資料工作區

昨天我們已經取得了 Olist 數據庫的「建築設計圖」!
今天,我們要正式進入輕量級 ETL 的第一步:Extract(萃取)。

步驟一:一分鐘建置 Python 虛擬環境

打開 VS Code,建立一個新的專案資料夾(例如命名為 olist_etl_project)。
終端機(Terminal),輸入以下指令:

  1. 建立並啟動虛擬環境 - 命名為 .venv

Mac/Linux 使用者:

Bash
python -m venv .venv
source .venv/bin/activate
Windows 使用者:

Windows 使用者:

Bash
python -m venv .venv
.venv\Scripts\activate
  1. 安裝核心套件
    啟動成功後,終端機前面會多出一個 (.venv) 的標記,代表我們進入下一步。
    來到安裝我們初步需要的套件:
pip install pandas jupyter

實作紀錄
https://ithelp.ithome.com.tw/upload/images/20260910/201361556m4qsahcsO.png


步驟二:思維升級!用 Python 字典實作動態批次讀取

環境建置後,請先在專案底下建立一個 data/ 資料夾,並把從 Kaggle 下載下來的 9 個.csv 檔案通通放進去。
面對到 9 項檔案,感覺的做法是宣告 9 個變數,寫 9 行 pd.read_csv(),這確實在單一檔案分析時很常見。
但在建構 ETL 管線時,我覺得可能會看重的是以下這兩種吧!
[ 「未來的擴充性」與「變數管理的整潔度」 ] ( 我思考的 /images/emoticon/emoticon19.gif

可以透過下表,快速比較這兩種思維的差異:

比較面向 一般逐一讀取 (手動宣告) 動態批次讀取 (進階思維)
實作方式 為每張表寫一行 Code 並賦予變數名稱 使用 os.listdir() 搭配迴圈自動掃描
程式碼長度 隨表格數量線性增加(9 張表 = 9 行) 固定行數,維持 DRY(不重複造輪子)原則
擴充性 較低。若明天新增 3 份檔案,需手動修改程式 極高。新增再多檔案也完全不用改 Code
變數管理 工作區散落多個 DataFrame 變數,不易管理 統一收納在 1 個 Python 字典 (dict) 裡,結構清晰

作了簡易的範例 - 如下

import pandas as pd
import os

# 指定資料夾路徑
data_path = "./data/"

# 建立一個空的字典,用來統一存放所有表格
olist_db = {}

# 讓程式自動找出資料夾內所有的 .csv 檔案
for file_name in os.listdir(data_path):
    if file_name.endswith(".csv"):
        # 去掉附檔名,把乾淨的檔案名稱當作字典的 Key
        table_name = file_name.replace(".csv", "")
        
        # 讀取檔案,並存為字典的 Value (也就是 DataFrame)
        olist_db[table_name] = pd.read_csv(os.path.join(data_path, file_name))

# 驗證看看我們讀進了哪些表?
print("成功載入以下資料表:")
print(olist_db.keys())

實作 如圖 所示
https://ithelp.ithome.com.tw/upload/images/20260910/20136155QHoznHemrb.png

未來需要作分析特定表單時,只要呼叫字典一樣輸入 olist_db['olist_orders_dataset'],
就能立刻將指定的 DataFrame 拿出來用 !
這正是利用模組化與自動化思維,將重複性勞動降到最低的最佳示範。


今天我們建立了乾淨的開發環境,
並親自實作了能自動適應檔案數量的動態讀取腳本,順利完成輕量級 ETL 的 Extract (萃取) 階段。
接下來遇到的是資料讀進來後,裡面是長得乾乾淨淨?還是充滿可怕的空值(NaN)與亂碼呢?
明天,我們將展開「資料健康檢查」,正式進入 EDA(探索性資料分析) 的環節!
See you later.


上一篇
[Day 02] 掌握全局:用 ER Diagram 釐清 9 張電商資料表的關聯邏輯
下一篇
[Day 04] 數據健康檢查:不急著畫圖,先用 EDA 摸清「訂單主表」的底細
系列文
拯救混亂數據:30 天 Python 輕量級 ETL 與電商關聯資料分析4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言